package aboutuser;

import aboutbook.BookList;
import tool.IOperation;

public abstract class User {
    //使用者的共有属性
    private String name;

    //在此定义 接口数组 因为 那些类（方法）都实现了接口
    // 但数组里面具体 放怎么放 放什么 就由子类根据菜单显示决定
    protected IOperation[] iOperations;

    //使用构造方法  快捷初始化
    public User(String name) {
        this.name = name;
    }

    //因为菜单方法 需要根据子类具体的类型 调用具体的方法 ，所以 父类菜单方法不能有具体实现，因此这里改为 抽象方法
    //既然方法 改为 抽象方法了 ， 那么类必须是抽象类
    public abstract int menu();

    public void doIOperation(int choice,BookList bookList){
        this.iOperations[choice].work(bookList);
    }

}
